package com.dai.spec.gxk.request;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dai.spec.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class StudentScorePageRequest {
    /**
     * 主键
     */
    @TableId(type = IdType.AUTO)
    @NotNull
    private Long id;
    /**
     * 学生学号
     */
    private String studentNumber;
    /**
     * 每页size
     */
    private Integer pageSize;
    /**
     * 页码
     */
    private Integer pageNum;

    /**
     * 课程名称
     */
    @Excel(name = "课程名称")
    @NotNull(message = "课程名称不能为空")
    private String courseName;


    /**
     * 课程学分
     */
    @Excel(name = "课程学分")
    @NotNull
    @Range(min = 1, max = 3, message = "学分必须在1-3之间")
    private BigDecimal credits;

    /**
     * 开课院系
     */
    @Excel(name = "开课院系")
    @NotNull(message = "开课院系不能为空")
    private String department;

    /**
     * 课程周期
     * ‘0’ 8周，
     * ‘1’ 16周
     */
    @Excel(name = "课程周期")
    @NotNull(message = "课程周期不能为空")
    private String courseCycle;

    /**
     * 开课时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date startTime;

    /**
     * 上课地点
     */
    private String location;
    /**
     * 课程类型
     * ‘0’ 社会科学类
     * ‘1’ 自然科学类
     * ‘2’ 文学艺术类
     * ‘4’ 创新创业类
     */
    @Excel(name = "课程类型")
    @NotNull
    private String type;

    /**
     * 状态
     * ‘0’ 开放
     * ‘1’ 关闭
     * ‘2’ 已满
     */
    @Excel(name = "状态 ")
    @NotNull
    private String status;

    /**
     * 成绩
     */
    @NotNull
    @Range(min = 0,max = 100,message = "课程成绩必须在0~100之间")
    private Long score;

    /**
     *  开课类型
     *  ‘0’ 线上
     *  ‘1’ 线下
     */
    private String deliveryType;
}
